#ifndef _LOGIC_STATEMACHINE_RIBBONLOBEAMCTRLSTATE_H_
#define _LOGIC_STATEMACHINE_RIBBONLOBEAMCTRLSTATE_H_

#include "StateMachineState.h"

//**
typedef struct RibbonLoBeamCtrlStateMachine_Init
{
    StateMachineBase sm_;
    struct RibbonLoBeamCtrlStateMachine_Init* this_;
} RibbonLoBeamCtrlStateMachine_Init;
extern void RibbonLoBeamCtrlStateMachineInitEntry(void);
extern void RibbonLoBeamCtrlStateMachineInitExcute(void);
extern void RibbonLoBeamCtrlStateMachineInitExit(void);

//**
typedef struct RibbonLoBeamCtrlStateMachine_Off
{
    StateMachineBase sm_;
    struct RibbonLoBeamCtrlStateMachine_Off* this_;
} RibbonLoBeamCtrlStateMachine_Off;
extern void RibbonLoBeamCtrlStateMachineOffEntry(void);
extern void RibbonLoBeamCtrlStateMachineOffExcute(void);
extern void RibbonLoBeamCtrlStateMachineOffExit(void);

//***
typedef struct RibbonLoBeamEffectStateMachine_Unlock
{
    StateMachineBase sm_;
    struct RibbonLoBeamEffectStateMachine_Unlock* this_;
} RibbonLoBeamEffectStateMachine_Unlock;
extern void RibbonLoBeamEffectStateMachineUnlockEntry(void);
extern void RibbonLoBeamEffectStateMachineUnlockExcute(void);
extern void RibbonLoBeamEffectStateMachineUnlockExit(void);

//***
typedef struct RibbonLoBeamEffectStateMachine_Lock
{
    StateMachineBase sm_;
} RibbonLoBeamEffectStateMachine_Lock;
extern void RibbonLoBeamEffectStateMachineLockEntry(void);
extern void RibbonLoBeamEffectStateMachineLockExcute(void);
extern void RibbonLoBeamEffectStateMachineLockExit(void);

//***
typedef struct RibbonLoBeamEffectStateMachine_Default
{
    StateMachineBase sm_;
} RibbonLoBeamEffectStateMachine_Default;
extern void RibbonLoBeamEffectStateMachineDefaultEntry(void);
extern void RibbonLoBeamEffectStateMachineDefaultExcute(void);
extern void RibbonLoBeamEffectStateMachineDefaultExit(void);

//**
typedef struct RibbonLoBeamCtrlStateMachine_On
{
    RibbonLoBeamEffectStateMachine_Unlock   ribbonLoBeamEffectStateMachineUnlock_;
    RibbonLoBeamEffectStateMachine_Lock     ribbonLoBeamEffectStateMachineLock_;
    RibbonLoBeamEffectStateMachine_Default  ribbonLoBeamEffectStateMachineDefault_;

    StateMachineBase sm_;
} RibbonLoBeamCtrlStateMachine_On;
extern void RibbonLoBeamCtrlStateMachineOnEntry(void);
extern void RibbonLoBeamCtrlStateMachineOnExcute(void);
extern void RibbonLoBeamCtrlStateMachineOnExit(void);

//**
typedef struct RibbonLoBeamCtrlStateMachine_Again
{
    StateMachineBase sm_;
} RibbonLoBeamCtrlStateMachine_Again;
extern void RibbonLoBeamCtrlStateMachineAgainEntry(void);
extern void RibbonLoBeamCtrlStateMachineAgainExcute(void);
extern void RibbonLoBeamCtrlStateMachineAgainExit(void);

extern RibbonLoBeamCtrlStateMachine_On g_RibbonLoBeamCtrlStateMachine_On;
extern void InitRibbonLoBeamCtrlStateMachineOn(void);

#endif
